home *** CD-ROM | disk | FTP | other *** search
- /* TopScreen: Print the name of the topmost screen if it is public.
- * If it is not public, print "Workbench".
- *
- * Author: Daniel J. Barrett, barrett@cs.umass.edu
- * Public Domain
- */
-
- char *Version = "$VER: TopScreen 1.1 (3.12.94)";
-
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <exec/types.h>
- #include <intuition/intuition.h>
- #include <intuition/intuitionbase.h>
- #include <intuition/screens.h>
- #include <clib/exec_protos.h>
- #include <clib/intuition_protos.h>
-
- #define DEFAULT_SCREEN "Workbench"
-
- UBYTE *GetPubName(struct Screen *scr);
-
- struct IntuitionBase *IntuitionBase;
-
- VOID main(int argc, char **argv)
- {
- struct Screen *scr;
-
- IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library",0);
- if (!IntuitionBase)
- exit(1);
-
- scr = IntuitionBase->FirstScreen;
- if (!scr)
- puts(DEFAULT_SCREEN);
- else
- puts(GetPubName(scr));
-
- if (IntuitionBase)
- CloseLibrary((struct Library *)IntuitionBase);
- }
-
-
- UBYTE *GetPubName(struct Screen *scr)
- {
- struct List *list;
- struct Node *pubs;
- struct PubScreenNode *psn;
- static UBYTE name[MAXPUBSCREENNAME+1];
-
- strcpy(name, DEFAULT_SCREEN);
-
- if ((list = LockPubScreenList()) != NULL)
- {
-
- for (pubs = list->lh_Head; pubs->ln_Succ; pubs = pubs->ln_Succ)
- {
- psn = (struct PubScreenNode *)pubs;
- if (scr == psn->psn_Screen)
- {
- strcpy(name, pubs->ln_Name);
- break;
- }
- }
-
- UnlockPubScreenList();
- }
-
- return(name);
- }
-